Computer networks are commonly used in offices or corporate environments to interconnect personal computers (PCs). With the growth of PC usage has come an increasing demand to share computer files and facilitate administration of each PC after installation. In a network comprised of many PCs, the cost to an organization of having an Information Technology representative physically visit and service each PC can be enormous. In order to reduce these costs, software and computer manufacturers have developed technologies aimed at maintaining software products centrally on a network server and then downloading the desired software, via the network, to each client PC.
Designers and manufacturers of embedded intelligent connected equipment are looking for ways to reduce cost and improve manageability & reliability, facilitate deployment and secure intellectual property within these devices. One way to accomplish this is to introduce the ability for the client PC to boot from the network. The purpose of a PC's boot process is to load the necessary operating system components, initialize the hardware devices and present to the user an application. This is a long process and one that under normal conditions needs to consider changes in hardware or software configurations, as well as changes in authorized users. Network booting is better suited to those situations wherein the PC's associated hardware is fixed and the client PC's role does not change frequently. Network booting allows for the removal of the client PC's hard disk and facilitates centralized management of software content. Because current network bandwidth ( 10/100 Mbs and 1 Gbs) does not approach the speed of a client PC's local hard disk, a remote “cold boot” of an operating system (O/S) in a client PC from a network server is not terribly efficient and can take a great deal of time. Furthermore, bandwidth and network server resources can be further degraded by the additional challenge of attempting to boot simultaneously scores of client devices (a “boot storm”.) The lengthy time required to “cold boot” further distracts from the perception and behavior of a typical embedded device. Thus, what is needed is a scalable way to speed up booting of a plurality of client devices from a loading server in a network.
Basic input/output system (BIOS), PC and O/S manufacturers have introduced a technique called “hibernation”, whereby the current state of the PC memory & state of all devices are saved to disk and then restored at some future time. Hibernation had been used primarily in notebook PCs in order to conserve battery power. For example, a notebook PC configured for “Hibernate mode” will save its state to its local hard drive and power off when its lid is closed or after a period of inactivity, and then restore itself when the lid is re-opened. The net effect is to conserve battery power, with an advantageous side effect of returning the PC to the state prior to hibernation more quickly than if the client PC were to undergo a full “cold boot.” When power is reapplied to the notebook, the notebook will load a very small portion of the O/S. The O/S will check if a valid hibernation image exists. If a hibernation image exists, the O/S then will copy back into PC memory the memory contents saved to the hibernation file. If a hibernation image does not exist, then a normal “cold boot” process is commenced. Note that a hibernation “resume” using a hibernation image has an advantageous side effect of returning the PC to the desired state more quickly than if the PC were to undergo a “cold boot”, due in part to less required data initialization.
U.S. Pat. No. 6,101,601 to Matthews, et al., discloses an approach to resolving the long boot time associated with remotely booting a client device from a boot image in a network. However, that patent teaches resuming, following a reset of some kind, from a hibernation image stored on each client PC's local storage media. This approach requires any reconfiguration of the desired state of the PC to be performed prior to the hibernation of the client PC, and could possibly run afoul of network bandwidth problems as the server individually transfers a plurality of hibernate images to a corresponding plurality of client PCs in networks with large numbers of client PCs.
U.S. Pat. No. 5,974,547 to Klimenko teaches an apparatus for and method of using disk emulation for booting a 32-bit PC operating system (O/S) on a client computer through a networked connection to a server. In particular, that patent teaches a method of switching (on each disk I/O call) between the 32-bit protected mode processing of Windows 9x O/S's and the 16-bit real mode used by the BIOS, often referred to as “thunking”, until the client's O/S is able to perform networking on its own. The method and apparatus presented therein is particularly suited to booting an O/S such as Windows 95® from a server by downloading a complete image of the software applications desired on the client PC, including the O/S. However, that patent does not take advantage of the Hibernate function available on later versions of Microsoft Corporation's O/Ss, namely Windows 2000®, and Windows XP®, which run in protected mode. Nor does it address another feature of the present invention, the use of multicasting of desired data, which in certain preferred embodiments includes a Hibernation file, to a plurality of client PCs in the network.